package br.com.sgpv2.hibernate.nivel;

import java.util.List;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.organograma.Nivel;
import br.com.sgpv2.entity.pessoa.Contrato;

public interface NivelRepository {
	
	/**
	 * Método que salva um nivel no sistema.
	 */
	void salvar(Nivel nivel);

	/**
	 * Método que busca um nivel no sistema.
	 */
	Nivel buscar(Integer pk) throws NegocioExeception;

	/**
	 * Método que altera um nivel no sistema.
	 */
	void alterar(Nivel nivel);

	/**
	 * Método que lista todos os Niveis do sistema.
	 */
	List<Nivel> listar();

	/**
	 * Método que exclui um nivel do sistema.
	 */
	void excluir(Nivel nivel);
	
	/**
	 * Método que retorna todos os contratos de um determinado nivel.
	 */
	List<Contrato> listarContratosPorDepartamento(int idNivel);

		
	Nivel buscarNivelPorCodigo(String nivel);
	
	/**
	 * Método retorna todas os N�veis ordenados pelo atributo informado.
	 * @param atributoOrder
	 * @return
	 */
	List<Nivel> listarOrder(String atributoOrder);

	List<Nivel> consultarNivelPorDescricao(String descricao);

}
